const db = require('../models')

class UsersRepository {
  /**
   * 添加新用户
   * @param {Object} userData - 用户数据
   * @returns {Promise<Object>} - 返回新用户信息
   */
  async addNewUser(userData) {
    try {
      const newUser = await db.Users.create(userData);
      return newUser
    } catch (error) {
      throw error
    }
  }

  async delUserById(id) {
    const user = await db.Users.findByPk(id)
    return user ? (await user.destroy(), true) : false
  }

  async updateUserById(id, userData) {
    const user = await db.Users.findByPk(id)
    if (!user) {
      return false // 用户不存在
    }

    // 更新用户数据
    const [affectedRows] = await db.Users.update(userData, {
      where: { id }, // 添加 where 条件
    })

    return affectedRows > 0 // 返回是否更新成功
  }

  async getAllUsers() {
    return await db.Users.findAll()
  } 

  async getUserById(id) {
    return await db.Users.findByPk(id)
  }

  /**
   * 根据账号查询用户
   * @param {string} account - 用户账号
   * @returns {Promise<Object|null>} - 返回用户信息或 null
   */
  async getUserByAccount(account) {
    try {
      const user = await db.Users.findOne({
        where: { account }, // 根据 account 查询
        attributes: ['id', 'nickname', 'account', 'avatar', 'password', 'state', 'createdAt'], // 返回需要的字段
      });
      return user;
    } catch (error) {
      throw error;
    }
  }
}

module.exports = new UsersRepository()